package com.lenl.datastruct.tree;

/**
 * @author Lenl
 * @version v1.0
 * @create 2022-05-04 11:52
 * @description 顺序存储二叉树
 */
public class ArrayBinaryTree {
    public static void main(String[] args) {
        int[] arr={1,2,3,4,5,6,7};
        ArrBinaryTree arrBinaryTree=new ArrBinaryTree(arr);
        arrBinaryTree.preOrder(0);

    }


}
//编写一个ArrayBinaryTree，实现顺序存储二叉树遍历
class ArrBinaryTree{
    private int[] arr;//存储数据节点的数组
    public ArrBinaryTree(int[] arr){
        this.arr=arr;
    }
    //完成顺序存储二叉树的前序遍历
    public void preOrder(int index){
        //如果数组为空，或者arr.length=0
        if(arr==null||arr.length==0){
            System.out.println("数组为空，不能按照二叉树的前序遍历");
            return;
        }
        System.out.print(arr[index]+"\t");
        //向左递归遍历
        if(index*2+1<arr.length)
            preOrder(2*index+1); //左子节点编号为 2*n+1
        //向右递归遍历
        if(index*2+2<arr.length)
            preOrder(2*index+2);//右子节点编号为 2*n+2
    }
    //重载preOrder
    public void  preOrder(){
        preOrder(0);
    }
}
